import { PageParam } from '@/services/common'
import { covertTableData } from '@/utils/tableUtil'
import { request } from '@umijs/max'

export interface InfraFileVO {
  /**
   * 文件编号
   */
  id: number
  /**
   * 配置编号
   */
  configId?: number
  /**
   * 文件名
   */
  name?: string
  /**
   * 文件路径
   */
  path: string
  /**
   * 文件 URL
   */
  url: string
  /**
   * 文件类型
   */
  type?: string
  /**
   * 文件大小
   */
  size: number
  /**
   * 创建者
   */
  creator?: string
  /**
   * 创建时间
   */
  createTime: string
  /**
   * 更新者
   */
  updater?: string
  /**
   * 更新时间
   */
  updateTime: string
  /**
   * 是否删除
   */
  isDeleted: boolean
}

export interface InfraFileQueryDTO extends PageParam {
  /**
   * 文件编号
   */
  id: number
  /**
   * 配置编号
   */
  configId?: number
  /**
   * 文件名
   */
  name?: string
  /**
   * 文件路径
   */
  path: string
  /**
   * 文件 URL
   */
  url: string
  /**
   * 文件类型
   */
  type?: string
  /**
   * 文件大小
   */
  size: number
  /**
   * 创建者
   */
  creator?: string
  /**
   * 创建时间
   */
  createTime: string
  /**
   * 更新者
   */
  updater?: string
  /**
   * 更新时间
   */
  updateTime: string
  /**
   * 是否删除
   */
  isDeleted: boolean
}
export interface InfraFileUpdateDTO {
  /**
   * 文件编号
   */
  id: number
  /**
   * 配置编号
   */
  configId?: number
  /**
   * 文件名
   */
  name?: string
  /**
   * 文件路径
   */
  path: string
  /**
   * 文件 URL
   */
  url: string
  /**
   * 文件类型
   */
  type?: string
  /**
   * 文件大小
   */
  size: number
  /**
   * 创建者
   */
  creator?: string
  /**
   * 创建时间
   */
  createTime: string
  /**
   * 更新者
   */
  updater?: string
  /**
   * 更新时间
   */
  updateTime: string
  /**
   * 是否删除
   */
  isDeleted: boolean
}

export const getInfraFileById = async (id: string) => {
  return request<InfraFileVO>(`/api/infraFile?id=${id}`, { method: 'GET' })
}

export const getInfraFileList = async (params: InfraFileQueryDTO) => {
  return request<Array<InfraFileVO>>(`/api/infraFile/list`, { method: 'GET', params })
}

export const getInfraFilePage = async (params: InfraFileQueryDTO) => {
  let response = await request<Array<InfraFileVO>>(`/api/infraFile/page`, { method: 'GET', params })
  return covertTableData(response)
}

export const updateInfraFile = async (infraFileUpdateDTO: InfraFileUpdateDTO) => {
  return request<InfraFileVO>(`/api/infraFile/update`, { method: 'POST', data: infraFileUpdateDTO })
}

export const saveInfraFile = async (infraFileUpdateDTO: InfraFileUpdateDTO) => {
  return request<InfraFileVO>(`/api/infraFile/save`, { method: 'POST', data: infraFileUpdateDTO })
}

export const removeInfraFile = async (id: number) => {
  return request<boolean>(`/api/infraFile/remove?id=${id}`, { method: 'POST' })
}
